% fname: routing_oddeven__sel_nop__topology_8x8__.m
% ./noxim -routing oddeven -sel nop -dimx 8 -dimy 8  -sim 10000 -warmup 2000 -size 8 8 -buffer 2 -traffic transpose1 

function [max_pir, max_throughput, min_delay] = routing_oddeven__sel_nop__topology_8x8__(symbol)

data = [
%             pir      avg_delay     throughput      max_delay       rpackets         rflits
            0.008         18.262      0.0636816            116           4076          32605
            0.008        17.8698       0.063332             98           4056          32426
            0.008        18.2897      0.0642129            125           4108          32877
            0.008        18.2012      0.0636211            180           4075          32574
            0.008         18.207       0.064375            109           4120          32960
            0.008         18.132      0.0634648            192           4061          32494
            0.008        18.2926      0.0633594             98           4057          32440
            0.008        17.9063      0.0637109            103           4077          32620
            0.008        17.5753       0.061959             97           3965          31723
            0.008        17.5372      0.0633633            104           4054          32442
            0.008        17.7455       0.061377            132           3930          31425
            0.008         17.179      0.0639023             84           4089          32718
            0.008        18.1458       0.062752            109           4019          32129
            0.008        17.6169      0.0618418             99           3960          31663
            0.008        18.3602      0.0637363            119           4078          32633
            0.008        18.2345      0.0635977            137           4069          32562
            0.008        17.8647      0.0644609            110           4124          33004
            0.008        17.8188      0.0641992            122           4111          32870
            0.008        18.2698      0.0649102            125           4155          33234
            0.008        18.2984      0.0653477            133           4182          33458
           0.0088        19.1025        0.07075            132           4529          36224
           0.0088        18.7511      0.0692676            114           4435          35465
           0.0088        19.6464      0.0705664            142           4517          36130
           0.0088        20.4228      0.0708516            154           4534          36276
           0.0088        19.2285      0.0702578            107           4494          35972
           0.0088        20.5185      0.0716563            190           4584          36688
           0.0088         18.847      0.0701348            107           4489          35909
           0.0088        18.7225      0.0695313            114           4450          35600
           0.0088        19.2343      0.0697422            137           4464          35708
           0.0088        18.6299       0.069543            108           4450          35606
           0.0088        19.1635      0.0704629            105           4513          36077
           0.0088        18.8088      0.0706777             99           4525          36187
           0.0088        18.2521      0.0702891             90           4499          35988
           0.0088        18.4982      0.0681699            143           4364          34903
           0.0088        19.8412      0.0698652            170           4472          35771
           0.0088        19.7292      0.0706973            106           4528          36197
           0.0088        18.8579      0.0701309            173           4489          35907
           0.0088        19.3384       0.069748            105           4465          35711
           0.0088        19.6103       0.071127            106           4552          36417
           0.0088        19.2977      0.0708789            100           4538          36290
           0.0096        21.4757      0.0767266            152           4913          39284
           0.0096        20.3908      0.0750801            148           4805          38441
           0.0096        20.2635      0.0760996            137           4872          38963
           0.0096        20.3426      0.0760332            114           4866          38929
           0.0096        20.6922      0.0782637            137           5009          40071
           0.0096        20.2928      0.0778945            157           4986          39882
           0.0096        21.2055      0.0781289            225           4998          40002
           0.0096        21.3056         0.0785            123           5026          40192
           0.0096        21.3014      0.0769238            141           4923          39385
           0.0096        20.7857       0.077502            152           4961          39681
           0.0096        20.0199      0.0753984            122           4825          38604
           0.0096        20.5365      0.0770742            179           4930          39462
           0.0096        21.0648      0.0749434            217           4797          38371
           0.0096        21.0952      0.0778262            151           4979          39847
           0.0096        20.0698      0.0746621            136           4772          38227
           0.0096        20.6698      0.0776582            140           4972          39761
           0.0096        20.8554      0.0771621            163           4939          39507
           0.0096        20.6408      0.0770684            139           4936          39459
           0.0096          21.12      0.0780801            145           4998          39977
           0.0096        20.0273      0.0760098            162           4867          38917
           0.0104        23.3172      0.0842676            184           5394          43145
           0.0104        22.5661      0.0822441            163           5264          42109
           0.0104        22.4358       0.081041            208           5188          41493
           0.0104        23.2835      0.0842207            185           5389          43121
           0.0104        24.3214      0.0835195            190           5349          42762
           0.0104        22.2921      0.0834121            168           5338          42707
           0.0104        23.4093      0.0841191            190           5385          43069
           0.0104        23.6155      0.0841191            194           5384          43069
           0.0104        23.6202      0.0836602            206           5353          42834
           0.0104        23.5208      0.0837305            186           5357          42870
           0.0104        23.1007      0.0828418            185           5304          42415
           0.0104        23.9465      0.0835137            195           5342          42759
           0.0104        22.7439      0.0840488            292           5381          43033
           0.0104         22.948      0.0827383            206           5293          42362
           0.0104        22.9809      0.0819375            409           5244          41952
           0.0104        23.2666      0.0848613            293           5432          43449
           0.0104        22.5774      0.0817188            222           5230          41840
           0.0104        23.6022      0.0838066            262           5362          42909
           0.0104        22.7175      0.0841055            188           5385          43062
           0.0104        22.9381      0.0822773            247           5263          42126
           0.0112        26.8096      0.0920703            307           5892          47140
           0.0112        26.7024      0.0894375            707           5720          45792
           0.0112        24.6474      0.0887598            265           5680          45445
           0.0112        25.5003      0.0886016            500           5669          45364
           0.0112        28.0164      0.0923574            247           5907          47287
           0.0112        27.0288      0.0894043            546           5722          45775
           0.0112         25.613      0.0888125            271           5685          45472
           0.0112        27.0374      0.0910469            285           5830          46616
           0.0112        26.0922      0.0892129            550           5707          45677
           0.0112        26.8012      0.0892246            200           5710          45683
           0.0112        24.7106      0.0891289            258           5705          45634
           0.0112        28.4632      0.0911035            524           5831          46645
           0.0112        25.5635      0.0885781            223           5666          45352
           0.0112        23.4153      0.0866543            217           5543          44367
           0.0112        27.8177      0.0906934            319           5804          46435
           0.0112         27.313      0.0896328            405           5734          45892
           0.0112        25.3532       0.092207            225           5903          47210
           0.0112         26.646      0.0893281            216           5717          45736
           0.0112         25.381      0.0864355            455           5533          44255
           0.0112        26.3961      0.0902578            189           5776          46212
            0.012        31.1803      0.0970117            573           6206          49670
            0.012        32.6517      0.0960957            320           6149          49201
            0.012        30.6499      0.0952305            430           6095          48758
            0.012        29.4695       0.094584            236           6053          48427
            0.012        29.8616      0.0950703            592           6082          48676
            0.012        32.3151       0.097416            504           6236          49877
            0.012        32.1443      0.0970898            587           6216          49710
            0.012        31.6735      0.0975488            503           6249          49945
            0.012        34.4102      0.0965254            617           6178          49421
            0.012        27.7886      0.0941445            315           6022          48202
            0.012        29.3041      0.0965957            294           6182          49457
            0.012        29.2071      0.0950781            292           6083          48680
            0.012        29.8076      0.0951719            554           6096          48728
            0.012        28.4974      0.0947715            204           6068          48523
            0.012        26.9882      0.0950508            265           6082          48666
            0.012        27.2449      0.0946289            317           6055          48450
            0.012        32.0449      0.0961113            447           6152          49209
            0.012        32.9079      0.0950117            455           6082          48646
            0.012        30.4431      0.0958711            395           6136          49086
            0.012        28.8805       0.095584            280           6116          48939
           0.0128        40.7787       0.101051           1465           6470          51738
           0.0128        39.7777       0.104154            572           6667          53327
           0.0128        38.2285       0.102166            796           6539          52309
           0.0128        35.0844       0.102188            547           6537          52320
           0.0128        40.5195       0.103295            464           6614          52887
           0.0128        41.8553       0.102096           1078           6532          52273
           0.0128        34.5818       0.101473            396           6492          51954
           0.0128        35.6108       0.102861            840           6585          52665
           0.0128        43.2084       0.103086           1086           6599          52780
           0.0128        28.8625      0.0987559            295           6320          50563
           0.0128        44.6523       0.103758            872           6641          53124
           0.0128        44.3851       0.103619           1325           6630          53053
           0.0128        33.3834       0.101127            486           6474          51777
           0.0128        40.4254       0.102404            477           6552          52431
           0.0128        39.1884       0.102396            649           6556          52427
           0.0128        38.7776       0.102912            684           6586          52691
           0.0128        36.5497       0.101939            465           6523          52193
           0.0128        35.7895       0.101672            402           6509          52056
           0.0128         35.829       0.101115            565           6474          51771
           0.0128        47.0094        0.10302           1104           6594          52746
           0.0136         47.107       0.109078            889           6981          55848
           0.0136        50.2155       0.106869           1467           6840          54717
           0.0136        55.3843       0.108031           1073           6912          55312
           0.0136        67.0245       0.107045           1777           6848          54807
           0.0136        57.3674       0.109258           1342           6996          55940
           0.0136        49.3389       0.107227            831           6867          54900
           0.0136        47.2495       0.107779            761           6898          55183
           0.0136        52.7016       0.107461           1184           6876          55020
           0.0136        40.8221       0.107102            438           6854          54836
           0.0136        52.2568       0.108479           1151           6946          55541
           0.0136        75.6909       0.108756           2054           6963          55683
           0.0136        55.2323       0.109271           1372           6990          55947
           0.0136        70.3679       0.109406           1163           7001          56016
           0.0136          43.41       0.109109            576           6985          55864
           0.0136        62.2109       0.107928           1799           6910          55259
           0.0136        82.2114       0.109559           2900           7011          56094
           0.0136        61.3471       0.109316            782           6996          55970
           0.0136        68.9325       0.111764           1566           7152          57223
           0.0136        43.8877       0.109318            590           6998          55971
           0.0136        52.8782       0.108576            970           6945          55591
           0.0144        90.5438       0.113715           1243           7280          58222
           0.0144        80.1353       0.113797           1536           7282          58264
           0.0144        94.3753       0.115375           1691           7383          59072
           0.0144        106.064       0.113904           1379           7291          58319
           0.0144         151.66       0.115613           2562           7400          59194
           0.0144        171.171       0.116738           3224           7475          59770
           0.0144        104.705       0.113303           2417           7251          58011
           0.0144        85.6108       0.113467           2831           7259          58095
           0.0144        111.295       0.116002           1296           7423          59393
           0.0144        86.1152       0.113182           1265           7247          57949
           0.0144        111.852       0.113707           2951           7275          58218
           0.0144        82.9044       0.116219           1158           7437          59504
           0.0144        73.0421       0.113545            937           7264          58135
           0.0144        95.0322       0.115111           1872           7365          58937
           0.0144        134.458       0.113986           3710           7296          58361
           0.0144        157.748       0.116496           2061           7460          59646
           0.0144        136.217       0.115777           2794           7409          59278
           0.0144        107.296       0.114252           2715           7316          58497
           0.0144        99.2519       0.114437           1677           7320          58592
           0.0144        135.662       0.115867           1692           7415          59324
           0.0152        177.809       0.118232           2710           7565          60535
           0.0152        211.605       0.117904           2565           7547          60367
           0.0152        187.631        0.11865           2522           7592          60749
           0.0152        162.578       0.119256           2316           7629          61059
           0.0152        244.318       0.119225           3340           7631          61043
           0.0152        139.331        0.11701           2175           7488          59909
           0.0152        287.292       0.118102           5102           7557          60468
           0.0152        229.747       0.117053           4160           7493          59931
           0.0152         143.36       0.117748           2297           7537          60287
           0.0152        265.946       0.119426           4545           7641          61146
           0.0152        192.039       0.118932           3074           7609          60893
           0.0152        182.776       0.117109           3463           7499          59960
           0.0152        230.934       0.118924           4579           7611          60889
           0.0152        197.797        0.11757           3245           7527          60196
           0.0152        187.973       0.117109           2926           7496          59960
           0.0152        272.347       0.117873           4649           7544          60351
           0.0152        214.733       0.119332           2696           7640          61098
           0.0152        186.376       0.119574           2451           7653          61222
           0.0152        207.913       0.116201           3409           7438          59495
           0.0152        275.069       0.118936           3489           7615          60895
];

rows = size(data, 1);
cols = size(data, 2);

data_delay = [];
for i = 1:rows/20,
   ifirst = (i - 1) * 20 + 1;
   ilast  = ifirst + 20 - 1;
   tmp = data(ifirst:ilast, cols-5+1);
   avg = mean(tmp);
   [h sig ci] = ttest(tmp, 0.1);
   ci = (ci(2)-ci(1))/2;
   data_delay = [data_delay; data(ifirst, 1:cols-5), avg ci];
end

figure(1);
hold on;
plot(data_delay(:,1), data_delay(:,2), symbol);

data_throughput = [];
for i = 1:rows/20,
   ifirst = (i - 1) * 20 + 1;
   ilast  = ifirst + 20 - 1;
   tmp = data(ifirst:ilast, cols-5+2);
   avg = mean(tmp);
   [h sig ci] = ttest(tmp, 0.1);
   ci = (ci(2)-ci(1))/2;
   data_throughput = [data_throughput; data(ifirst, 1:cols-5), avg ci];
end

figure(2);
hold on;
plot(data_throughput(:,1), data_throughput(:,2), symbol);

data_maxdelay = [];
for i = 1:rows/20,
   ifirst = (i - 1) * 20 + 1;
   ilast  = ifirst + 20 - 1;
   tmp = data(ifirst:ilast, cols-5+3);
   avg = mean(tmp);
   [h sig ci] = ttest(tmp, 0.1);
   ci = (ci(2)-ci(1))/2;
   data_maxdelay = [data_maxdelay; data(ifirst, 1:cols-5), avg ci];
end

figure(3);
hold on;
plot(data_maxdelay(:,1), data_maxdelay(:,2), symbol);


%-------- Saturation Analysis -----------
slope=[];
for i=2:size(data_throughput,1),
    slope(i-1) = (data_throughput(i,2)-data_throughput(i-1,2))/(data_throughput(i,1)-data_throughput(i-1,1));
end

for i=2:size(slope,2),
    if slope(i) < (0.95*mean(slope(1:i)))
        max_pir = data_throughput(i, 1);
        max_throughput = data_throughput(i, 2);
        min_delay = data_delay(i, 2);
        break;
    end
end
